// 自测
const arr = [
  { id: 1, name: "部门1", pid: 0 },
  { id: 2, name: "部门2", pid: 1 },
  { id: 3, name: "部门3", pid: 1 },
  { id: 4, name: "部门4", pid: 3 },
  { id: 5, name: "部门5", pid: 3 },
  { id: 6, name: "部门6", pid: 3 },
  { id: 8, name: "部门8", pid: 7 },
  { id: 10, name: "部门10", pid: 9 },
];

function arrToTree(arr) {
  if (!arr) {
    return [];
  }
  const map = new Map();
  const result = [];
  for (const node of arr) {
    map.set(node.id, { ...node, children: [] });
  }
  for (const node of arr) {
    const cur = map.get(node.id);
    const parent = map.get(node.pid);
    if (parent) {
      parent.children.push(cur);
    } else {
      result.push(cur);
    }
  }
  return result;
}

console.log(arrToTree(arr));
